import request from '@/utils/request'

/**
 * 单词分类相关API
 */
export default {
  /**
   * 获取单词分类列表
   * @param {Object} params - 查询参数
   * @returns {Promise}
   */
  getCategories(params) {
    return request({
      url: '/categories',
      method: 'get',
      params
    })
  },

  /**
   * 获取单词分类详情
   * @param {Number|String} id - 分类ID
   * @returns {Promise}
   */
  getCategory(id) {
    return request({
      url: `/categories/${id}`,
      method: 'get'
    })
  },

  /**
   * 创建单词分类
   * @param {Object} data - 分类数据
   * @returns {Promise}
   */
  createCategory(data) {
    return request({
      url: '/categories',
      method: 'post',
      data
    })
  },

  /**
   * 更新单词分类
   * @param {Number|String} id - 分类ID
   * @param {Object} data - 分类数据
   * @returns {Promise}
   */
  updateCategory(id, data) {
    return request({
      url: `/categories/${id}`,
      method: 'put',
      data
    })
  },

  /**
   * 删除单词分类
   * @param {Number|String} id - 分类ID
   * @returns {Promise}
   */
  deleteCategory(id) {
    return request({
      url: `/categories/${id}`,
      method: 'delete'
    })
  },

  /**
   * 获取分类下的单词
   * @param {Number|String} id - 分类ID
   * @param {Object} params - 查询参数
   * @returns {Promise}
   */
  getCategoryWords(id, params) {
    return request({
      url: `/categories/${id}/words`,
      method: 'get',
      params
    })
  },

  /**
   * 添加单词到分类
   * @param {Number|String} categoryId - 分类ID
   * @param {Object} data - 单词数据
   * @returns {Promise}
   */
  addWordToCategory(categoryId, data) {
    return request({
      url: `/categories/${categoryId}/words`,
      method: 'post',
      data
    })
  },

  /**
   * 从分类中移除单词
   * @param {Number|String} categoryId - 分类ID
   * @param {Number|String} wordId - 单词ID
   * @returns {Promise}
   */
  removeWordFromCategory(categoryId, wordId) {
    return request({
      url: `/categories/${categoryId}/words/${wordId}`,
      method: 'delete'
    })
  },

  /**
   * 获取单词的所有分类
   * @param {Number|String} wordId - 单词ID
   * @returns {Promise}
   */
  getWordCategories(wordId) {
    return request({
      url: `/words/${wordId}/categories`,
      method: 'get'
    })
  },

  /**
   * 获取分类树
   * @returns {Promise}
   */
  getCategoryTree() {
    return request({
      url: '/categories/tree',
      method: 'get'
    })
  }
} 